Eventual এবং Strong Consistency

Database Tutorials - ডাইনামোডিবি (DynamoDB) - DynamoDB Advanced Topics |

DynamoDB এ ডেটার Consistency Models নির্ধারণ করে যে, যখন ডেটা পরিবর্তিত হবে, তখন এটি কতটুকু দ্রুত সিঙ্ক হবে এবং কবে তা সঠিকভাবে সকল রিড অপারেশনে প্রতিফলিত হবে। DynamoDB দুটি প্রধান কনসিস্টেন্সি মডেল প্রদান করে:

  1. Strong Consistency
  2. Eventual Consistency

এগুলি একে অপরের থেকে আলাদা, কারণ প্রতিটি মডেল ডেটার উপলব্ধতা এবং লেটেন্সি (দেরি) এর জন্য ভিন্ন আচরণ দেখায়।


1. Strong Consistency (স্ট্রং কনসিস্টেন্সি)

Strong Consistency নিশ্চিত করে যে, ডেটার সর্বশেষ অবস্থান সব সময় পাওয়া যাবে, যত তাড়াতাড়ি সম্ভব। এর মানে হল যে, আপনি যখন কোনও ডেটা রিড করবেন, তখন আপনি ডেটার সর্বশেষ পরিবর্তিত বা আপডেট হওয়া অবস্থান পাবেন।

Strong Consistency এর বৈশিষ্ট্য:

  • অ্যাক্সেসের পরে সর্বশেষ ডেটা: যদি আপনি ডেটা পরিবর্তন করেন এবং তার পরপরই সেই ডেটা রিড করতে চান, তবে strong consistency নিশ্চিত করে যে আপনি সর্বশেষ আপডেটেড ডেটাই পাবেন।
  • স্টেল ডেটা পাবেন না: ডেটা যদি পরিবর্তিত হয়ে থাকে, তবে আপনি তৎক্ষণাৎ সেই পরিবর্তিত ডেটা দেখতে পাবেন।
  • সেটআপে সামান্য লেটেন্সি: যেহেতু এটি নিশ্চিত করে যে সব রেপ্লিকাগুলি আপডেট হয়েছে, এই প্রক্রিয়া কিছুটা দেরি করে (Latency)। তবে, এটি ক্রিটিকাল অ্যাপ্লিকেশন যেমন ফাইন্যান্সিয়াল ডেটা বা ট্রানজেকশনাল ডেটার জন্য খুব উপকারী।

Strong Consistency এর উদাহরণ:

  • R/W অপারেশন: যখন আপনি strongly consistent read করতে চান, আপনাকে প্রতিটি রিড অপারেশনের জন্য সমস্ত রেপ্লিকাগুলিকে যাচাই করতে হয়, যার ফলে কিছু লেটেন্সি হতে পারে।
  • API Call উদাহরণ:

    aws dynamodb get-item \
      --table-name "MyTable" \
      --key '{"UserID": {"S": "user123"}}' \
      --consistent-read
    

এখানে --consistent-read অপশনটি নিশ্চিত করে যে আপনি একটি strongly consistent রিড করছেন এবং সর্বশেষ ডেটা পাবেন।


2. Eventual Consistency (ইভেন্টুয়াল কনসিস্টেন্সি)

Eventual Consistency হল একটি অনুকূলিত কনসিস্টেন্সি মডেল, যেখানে ডেটার সর্বশেষ পরিবর্তন সবার কাছে পৌঁছানোর জন্য কিছু সময় লাগে। অর্থাৎ, যখন আপনি ডেটা রিড করবেন, আপনি সর্বশেষ আপডেট করা ডেটা নাও পেতে পারেন, তবে কিছু সময় পর তা নিশ্চিতভাবে সব জায়গায় পৌঁছে যাবে।

Eventual Consistency এর বৈশিষ্ট্য:

  • লো লেটেন্সি: Eventual consistency দ্রুত রিড অপারেশন করতে সহায়তা করে, কারণ এটি প্রতিটি রেপ্লিকা যাচাই করার প্রয়োজন হয় না।
  • দ্রুত আপডেট সিঙ্ক: সিস্টেমে পরিবর্তন ঘটলে, তা বেশ দ্রুত অন্য রেপ্লিকাগুলিতে ছড়িয়ে পড়ে, তবে এটি strong consistency এর চেয়ে কিছুটা দেরিতে সিঙ্ক হয়।
  • স্টেল ডেটা পাওয়ার সম্ভাবনা: যদি ডেটা পরিবর্তিত হয়ে থাকে, তবে আপনি কিছু সময়ের জন্য আগের (পুরনো) ডেটা দেখতে পারেন।
  • উপযুক্ত যখন: যখন ডেটার পরিসংখ্যান বা ইম্পরট্যান্স কম থাকে এবং দ্রুত রিড/রাইট অপারেশন প্রয়োজন।

Eventual Consistency এর উদাহরণ:

  • API Call উদাহরণ:

    aws dynamodb get-item \
      --table-name "MyTable" \
      --key '{"UserID": {"S": "user123"}}'
    

এখানে কোনো --consistent-read অপশন ব্যবহার করা হয়নি, যার মানে হল যে, এটি eventually consistent read হবে এবং সব সময় সর্বশেষ ডেটা নাও পেতে পারে।


Eventual এবং Strong Consistency এর মধ্যে পার্থক্য:

বৈশিষ্ট্যStrong ConsistencyEventual Consistency
Latencyএকটু বেশি, কারণ প্রতিটি রেপ্লিকার সাথে আপডেট চেক করা হয়।কম লেটেন্সি, দ্রুত রিড অপারেশন।
Data Availabilityসর্বশেষ আপডেটেড ডেটা নিশ্চিতভাবে পাওয়া যায়।কিছু সময়ের জন্য পুরনো ডেটা দেখতে পারেন।
Use Caseফাইন্যান্সিয়াল, ট্রানজেকশনাল বা যে কোনও গুরুত্বপূর্ণ অ্যাপ্লিকেশন।বড় স্কেল অ্যাপ্লিকেশন যেখানে ডেটার সামান্য পরিমাণ ত্রুটি মেনে নেওয়া যায়।
Consistency Guaranteeসর্বদা সর্বশেষ ডেটা পাওয়া যাবে।কিছু সময় পর সর্বশেষ ডেটা পাওয়া যাবে।

কখন কোনটি ব্যবহার করবেন?

  • Strong Consistency: যখন ডেটার সঠিকতা এবং আপডেটের সঠিক অবস্থান গুরুত্বপূর্ণ, যেমন ব্যাঙ্কিং বা ট্রানজেকশনাল সিস্টেম।
  • Eventual Consistency: যখন আপনার অ্যাপ্লিকেশনে হালনাগাদ ডেটার কিছুটা বিলম্ব গ্রহণযোগ্য, এবং যেখানে দ্রুত রিড/রাইট অপারেশন প্রয়োজন, যেমন লগ ডেটা বা বড় স্কেল ই-কমার্স সিস্টেম।

DynamoDB এ Eventual Consistency সাধারণত কম খরচে এবং উচ্চ পারফরম্যান্স সরবরাহ করে, তবে যদি Strong Consistency প্রয়োজন হয়, তবে সামান্য বেশি খরচ এবং লেটেন্সি হতে পারে।

Content added By

আরও দেখুন...

Promotion